package com.lenl.arithmetic.tenusablealgorithm.dac;

/**
 * @author Lenl
 * @version v1.0
 * @create 2022-05-14 11:31
 * @description 分治算法解决 汉诺塔问题
 */
public class Hanoitower {
    public static void main(String[] args) {
        hanoiTower(2,'a','b','c');

    }

    //汉诺塔的移动方法
    public static void hanoiTower(int num,char a,char b,char c){
        //如果只有一个盘
        if(num==1){
            System.out.println("第1个盘从"+a+"->"+c);
        }else{
            //总是将最下边看作盘2，上面其他盘看作盘1
            //1.先把最上面所有盘a->b，移动过程中会使用到c
            hanoiTower(num-1,a,c,b);
            //2.把最下面的盘a->c
            System.out.println("第"+num+"个盘从"+a+"->"+c);
            //3.把B塔所有的盘从b->c,移动过程用到a
            hanoiTower(num-1,b,a,c);
        }
    }

}
